#pragma once

class Registry
{
public:
	Registry(HKEY folder);
	~Registry(void);

	void OpenPath(std::wstring path);
	void OpenSubPath(std::wstring path);

	void CreateAndOpenKey(std::wstring name);
	void NewKey(std::wstring name);
	void DeleteKey(std::wstring name);
	
	template <typename T>
	void AddAttribute(std::wstring name, T value);

	void DeleteAttribute(std::wstring name);

	bool KeyExists(std::wstring path);
	bool AttributeExists(std::wstring attribute);

	template <typename T>
	T GetAttribute(std::wstring name);

private:
	HKEY mKey;
	HKEY mSubKey;

	Registry(const Registry& reg) {}
};